import os,time
### multiprocess
from multiprocessing import Process
def func():
    print('process {} starts'.format(os.getpid()))
    time.sleep(2)
    print('process {} ends'.format(os.getpid()))

if __name__ == '__main__':
    print('main process is {}'.format(os.getpid()))#从主进程创建新的进程使用的是Process类，
    start_time = time.time()
    p1 = Process(target=func)
    p2 = Process(target=func)
    p1.start()
    p2.start()
    p1.join()#阻塞主进程，使主进程等待p1子进程
    p2.join()#阻塞主进程，使主进程等待p2子进程
    end_time = time.time()
    print('total time is {}'.format(str(end_time - start_time)))
# 可以看到，创建的子进程和主进程的进程ID是不一样的，说明此时一共有三个进程在同时跑。
# 最后的用时为2.387秒，几乎降到了顺序执行一半的程度，当然比单个函数执行的时间还是慢了点，
# 说明进程的创建和停止还是需要耗时的